package com.xiuyi.aiagent.rag;


import org.springframework.ai.chat.client.advisor.RetrievalAugmentationAdvisor;
import org.springframework.ai.chat.client.advisor.api.Advisor;
import org.springframework.ai.rag.retrieval.search.VectorStoreDocumentRetriever;
import org.springframework.ai.vectorstore.VectorStore;
import org.springframework.ai.vectorstore.filter.Filter;
import org.springframework.ai.vectorstore.filter.FilterExpressionBuilder;

/**
 * 创建自定义的 RAG 检索增强顾问工厂
 */
public class LoveAppRagCustomAdvisorFactory {

    /**
     * 创建自定义的RAG增强检索顾问
     *
     * @param vectorStore 向量存储
     * @param status 状态
     * @return 自定义的RAG增强检索顾问
     */
    public static Advisor createLoveAppRagCustomAdvisor(VectorStore vectorStore, String status) {
        // 创建特定的过滤表达式
        Filter.Expression expression = new FilterExpressionBuilder()
                .eq("status", status)
                .build();
        // 创建文档检索器
        VectorStoreDocumentRetriever documentRetriever = VectorStoreDocumentRetriever.builder()
                .vectorStore(vectorStore)
                .filterExpression(expression) // 过滤条件
                .similarityThreshold(0.5) // 相似度阈值
                .topK(3) // 文档返回数量（召回量）
                .build();
        return RetrievalAugmentationAdvisor.builder()
                .documentRetriever(documentRetriever) // 文档检索器
                .queryAugmenter(LoveAppContextualQueryAugmenterFactory.createInstance()) // 上下文增强器（配置错误处理器）
                .build();
    }
}
